package com.beiding.t;

import com.alibaba.fastjson.JSON;
import com.beiding.jsonanalyzer.*;
import org.apache.tomcat.util.http.fileupload.FileUtils;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.web.client.RestTemplate;

import java.io.File;
import java.nio.charset.Charset;
import java.util.*;
import java.util.Comparator;

/**
 * @author 丁常磊
 * @date 2022/2/15 11:26
 */

public class 顺序调用款机请求进行营销计算 {
//
//    public static void main(String[] args) {
//
//        //来源目录
//        fileDir = "C:\\Users\\lenovo\\Desktop\\报文日志\\info-60401891-20220215";
//
//        outDir = "C:\\Users\\lenovo\\Desktop\\报文日志\\调用结果";
//
//        //生成一个随机单据号
//        replaceStrings.executeOne("6040189190918438", "ding-llk-" + System.currentTimeMillis());
//
//
//        //不执行的
//        passFiles.addElement("计算单行商品");
//        passFiles.addElement("保存订单");
//        passFiles.addElement("促销限量");
//        passFiles.addElement("核销");
//
//        //所有的文件
//        List<Req> reqs = listFiles();
//
//        for (Req req : reqs) {
//            if (req.name.contains("计算单行商品")) {
//                String caleBuild = genCaleBuild(req);
//                replaceStrings.executeOne("FC8C720493FE473B9AA1F520C2DD52B4", caleBuild);
//            }
//        }
//
//        out:
//        for (Req req : reqs) {
//
//            for (String file : passFiles) {
//                if (req.name.contains(file)) {
//                    continue out;
//                }
//            }
//
//
//            Analyzer reqAna = Analyzer.read(req.json);
//
//            List<Key> keys = reqAna.keysMatches(".*sell_payments.*payname.*", 0);
//
//            if (keys.size() > 0) {
//                System.out.println("使用了推荐支付");
//            }
//
//            Analyzer request = request(req.url, reqAna);
//
//            //生成一个文件夹,存放请求和响应
//
//            File dir = new File(outDir, req.name.substring(0, req.name.length() - 5));
//
//            //创建文件目录
//            if (!dir.exists()) {
//                dir.mkdirs();
//            }
//
//            StringBuilder builder = new StringBuilder();
//            builder.append("请求地址:\n");
//
//            builder.append(req.url);
//            ResourceUtils.write(builder.toString(), new File(dir, "基础信息.txt"));
//
//
//            ResourceUtils.write(req.json, new File(dir, "请求.json"));
//            ResourceUtils.write(request.format(), new File(dir, "响应.json"));
//
//        }
//
//    }
//
//
//    /**
//     * 被替换的字符串
//     */
//    private static Map<String, String> replaceStrings = new HashMap<>();
//
//    /**
//     * 跳过的文件
//     */
//    private static List<String> passFiles = new ArrayList<>();
//
//    private static String outDir;
//
//    private static String fileDir;
//
//    private static List<Req> listFiles() {
//        File dir = new File(fileDir);
//
//        File[] listFiles = dir.listFiles();
//
//        List<File> list = Arrays.asList(listFiles);
//        list.sort(Comparator.comparing(File::getName));
//
//        List<Req> reqs = new ArrayList<>();
//
//        for (File file : list) {
//
//            //读取所有的文本
//            String read = ResourceUtils.read(file);
//
//            read = new String(read.getBytes(), Charset.forName("utf8"));
//
//            int i = read.indexOf("\n\n");
//            String url = read.substring(0, i);
//            String content = read.substring(i + 1);
//            Req req = new Req();
//            req.json = content;
//            req.url = url;
//            req.file = file;
//            req.name = file.getName();
//            reqs.addElement(req);
//        }
//
//        return reqs;
//
//    }
//
//    private static String genCaleBuild(Req req) {
//        Analyzer read = Analyzer.read(req.json);
//        Analyzer r = request(req.url, read);
//
//        return r.getString(Key.read("data.calc_billid"));
//    }
//
//    /**
//     * 调用
//     *
//     * @param path
//     * @param body
//     * @return
//     */
//    private static Analyzer request(String path, Analyzer body) {
//     /*   replaceStrings.forEach((k, v) -> {
//            for (Key key : body.findKeys(Value.eq(k))) {
//                body.set(key, v);
//            }
//        });*/
//        RestTemplate restTemplate = new RestTemplate();
//        HttpHeaders httpHeaders = new HttpHeaders();
//
//        HttpEntity<String> entity = new HttpEntity<>(body.getContent(JSON.class).toJSONString(), httpHeaders);
//        String jsonObject = restTemplate.postForObject(path, entity, String.class);
//        return Analyzer.read(jsonObject);
//    }
//
//
//    private static class Req {
//        String json;
//        File file;
//        String name;
//        String url;
//    }

}
